package br.ufc.persis.model;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.Table;

@Entity
@Table(name="pesquisador_projeto")
public class PesquisadorProjeto {

	@EmbeddedId
	private PesquisadorProjetoPK pk = new PesquisadorProjetoPK();
	@Column(name = "carga_horaria_semanal")
	private int cargaHoraria;
	
	public PesquisadorProjetoPK getPk() {
		return pk;
	}

	public void setPk(PesquisadorProjetoPK pk) {
		this.pk = pk;
	}

	public int getCargaHoraria() {
		return cargaHoraria;
	}

	public void setCargaHoraria(int cargaHoraria) {
		this.cargaHoraria = cargaHoraria;
	}

	@Embeddable
	public class PesquisadorProjetoPK implements Serializable{

		private static final long serialVersionUID = 1L;
		
		@ManyToOne
		@JoinColumn(name = "pesquisador_id")
		private Pesquisador pesquisador;
		@ManyToOne
		@JoinColumn(name = "projeto_id")
		private Projeto projeto;
		
		public Pesquisador getPesquisador() {
			return pesquisador;
		}
		
		public void setPesquisador(Pesquisador pesquisador) {
			this.pesquisador = pesquisador;
		}
		
		public Projeto getProjeto() {
			return projeto;
		}
		
		public void setProjeto(Projeto projeto) {
			this.projeto = projeto;
		}

		@Override
		public int hashCode() {
			final int prime = 31;
			int result = 1;
			result = prime * result
					+ ((pesquisador == null) ? 0 : pesquisador.hashCode());
			result = prime * result
					+ ((projeto == null) ? 0 : projeto.hashCode());
			return result;
		}

		@Override
		public boolean equals(Object obj) {
			if (this == obj)
				return true;
			if (obj == null)
				return false;
			if (getClass() != obj.getClass())
				return false;
			PesquisadorProjetoPK other = (PesquisadorProjetoPK) obj;
			if (pesquisador == null) {
				if (other.pesquisador != null)
					return false;
			} else if (!pesquisador.equals(other.pesquisador))
				return false;
			if (projeto == null) {
				if (other.projeto != null)
					return false;
			} else if (!projeto.equals(other.projeto))
				return false;
			return true;
		}
		
	}
}
